﻿using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;
using EntGuayasSLA.BL.Listas.Criterias;
using Ext.Net;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace EGuayas.Web.Auditoria.admin.Global
{
    public partial class wucLickObligaciones : ucWuc
    {
       
        protected String ExpedienteAud
        {
            get
            {

                return ReadCustomConfig(this.pnlLickObligaciones, this.ID, "_expAud");
            }

        }
        protected String Expediente
        {
            get
            {

                return ReadCustomConfig(this.pnlLickObligaciones, this.ID, "_exp");
            }

        }
        protected void Page_Load(object sender, EventArgs e)
        { 
            try
            {
                if (!X.IsAjaxRequest)
                {
                    this.hddIdExp.SetValue(Expediente);
                    BindDataObligaciones();               
                }
            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.Page_Load" + ex);
            }
            
        }
        public void SetIdExpedienteAuditoria(string IdVal)
        {
            try
            {
                this.hddIdExpAud.SetValue(IdVal);
            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.SetIdExpedienteAuditoria" + ex);
            }
        }
        [DirectMethod(IDAlias = "wucLicOblig", ShowMask = true)]
        public void DeleteConfiguracion(string IdObligacion)
        {
           try
           {
            
            Obligaciones objObligaciones = Obligaciones.GetEditableRoot(Guid.Parse(IdObligacion));
            switch (objObligaciones.Tipo)
            {
                case Valores.Codigo_TipoObligacion_Cump:
                    if (objObligaciones.AuditoriaId != "")
                    {
                        AuditoriaCumplimiento audCump = AuditoriaCumplimiento.GetEditableRoot(Guid.Parse(objObligaciones.AuditoriaId));
                        audCump.Delete();
                        audCump.Save();
                    }
                    break;
                case Valores.Codigo_TipoObligacion_Mon:
                    if (objObligaciones.AuditoriaId != "")
                    {
                        AuditoriaMonitoreo audMon = AuditoriaMonitoreo.GetEditableRoot(Guid.Parse(objObligaciones.AuditoriaId));
                        audMon.Delete();
                        audMon.Save();
                    }
                    break;
                case Valores.Codigo_TipoObligacion_Pma:
                    if (objObligaciones.AuditoriaId != "")
                    {
                        AuditoriaPMA audPma = AuditoriaPMA.GetEditableRoot(Guid.Parse(objObligaciones.AuditoriaId));
                        audPma.Delete();
                        audPma.Save();
                    }
                    break;
                case Valores.Codigo_TipoObligacion_Otros:
                    if (objObligaciones.AuditoriaId != "")
                    {
                        AuditoriaOtros audOtros = AuditoriaOtros.GetEditableRoot(Guid.Parse(objObligaciones.AuditoriaId));
                        ArchivoGlobalCriteria filter = ArchivoGlobalCriteria.NewArchivoGlobalCriteria();
                        filter.ExpedienteId = Expediente;
                        filter.FaseId = objObligaciones.AuditoriaId;
                        filter.Tabla = Valores.Modulo_Archivo_Aud_Otros;
                        ArchivoLista itemLoad = ArchivoLista.GetArchivoLista(filter);
                        foreach (ArchivoInfo item in itemLoad)
                        {
                            Archivo objArch = Archivo.GetEditableRoot(item.ArchivoId, Valores.Modulo_Archivo_Aud_Otros);
                            DeleteFile(objArch.Ruta);
                            objArch.Delete();
                            objArch.Save();
                        }
                        audOtros.Delete();
                        audOtros.Save();
                    }
                    break;

            }

            //objObligaciones.FechaInicio = DateTime.Parse();//Setearla en null
            objObligaciones.Tipo = "";
            objObligaciones.Alerta = 0;
            objObligaciones.Presentacion = "";
            objObligaciones.Configuracion = Valores.Codigo_CHAR_No;
            objObligaciones.Save();
            BindDataObligaciones();
            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.DeleteConfiguracion" + ex);
            }
        }

        #region Obligaciones
        //Invocado al cerrar ventana detalle
        [DirectMethod(IDAlias = "wucLicOblig", ShowMask = true)]
        public void BindDataObligaciones()
        {
            try
            {
                var expId = Expediente;
                if (expId != "")
                {
                    this.stoObliga.DataSource = ObligacionLista.GetObligacionLista(expId);
                    this.stoObliga.DataBind();
                }
             }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.BindDataObligaciones " + ex);
            }
        }
        
        #endregion
        public void EnableLinkObligaciones(Boolean val)
        {
            try
            {
                if (val)
                    this.gpObligaciones.Enable();
                else
                    this.gpObligaciones.Disable();
            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.EnableLinkObligaciones" + ex);
            }
        }
        private void DeleteFile(string file)
        {
            try
            {
                var path = Server.MapPath(file);
                if (System.IO.File.Exists(path))
                    File.Delete(path);
            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.DeleteFile" + ex);
            }
        }
        /// <summary>
        /// Elimnar item de tarea
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnEliminar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                var id = Guid.Parse(e.ExtraParams["hddDelId"]);
                Obligaciones objObli = Obligaciones.GetEditableRoot(id);
                objObli.Delete();
                objObli.Save();

                BindDataObligaciones();


            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.btnEliminar_Click " + ex);
            }


        }
        /// <summary>
        /// Crear/Modificar tareas
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnGuardar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                Obligaciones objObliga = Obligaciones.NewEditableRoot();
                string msgOperacion = "";
                if (e.ExtraParams["hddId"] == "")
                {
                    msgOperacion = "creada";
                    objObliga.Id = System.Guid.NewGuid();
                    objObliga.Expediente = Expediente;
                }
                else
                {
                    msgOperacion = "modificada";
                    objObliga = Obligaciones.GetEditableRoot(Guid.Parse(e.ExtraParams["hddId"]));
                    //objObliga.Fecha = Convert.ToDateTime(e.ExtraParams["dfFechaInicio"]);
                }
                objObliga.Nombre = e.ExtraParams["txtAsunto"];
                objObliga.Save();

                BindDataObligaciones();
                X.Msg.Show(new MessageBoxConfig
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO,
                    Title = "Estado",
                    Message = string.Format("{0} <b>{1}</b> {2}", "Obligaciones", objObliga.Nombre, msgOperacion)
                });


            }
            catch (Exception ex)
            {
                RegistrarLog("wucLickObligaciones.btnGuardar_Click " + ex);
            }
        }
        

    }
}